package Behavioral.Observer.polling.waitNotify;

//输入线程
public class Input implements Runnable {
    Resource r;
    public Input(Resource r) {
        this.r = r;
    }
    @Override
    public void run() {
        int x = 0;
        while (true) {
            synchronized (r) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                if (x == 0) {
                    r.name = "谢霆锋";
                    r.sex = "男人";
                } else {
                    r.name = "张柏芝";
                    r.sex = "女人";
                }
// 注意：调用notify方法后，唤醒了等待的线程。
// 但这里代码继续执行，并不是马上交给其它线程执行，除非cpu时间片结束。
                r.notify();
                try {
                    r.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            x = (x + 1) % 2;
        }
    }
}
